﻿Imports System.Text
Imports System.Math

Public Class frmDefinitivo
    Inherits formPadrao
    Dim Sep As Char = ","
    Dim Nombre As Double
    Public WithEvents ucPreambulo As New ucPreambulo
    Private nomeDiretorio As String = Nothing
    Public WithEvents btnLimpar As System.Windows.Forms.Button
    Private registro As New registroVO
    Private mensagem As String
    Private PPI As Boolean = System.Configuration.ConfigurationManager.AppSettings("PPI")
    Private erroNivel As Integer = 0
    Private regInserido As New registroVO
    Public WithEvents _ucDrogas As New ucDrogas(True)
    Private _ehPreliminar As Boolean = Nothing
    Private tevePeso As Boolean = False
    Public CARREGADADOS As Boolean = Nothing
    Public NUM_REGISTRO As Integer
    Public ANO As Integer
    Public ID_TIPO_PERICIA As Integer = 16
    Public ID_NATUREZA As Integer = 73
    Public EHNOVO As Boolean = True
    Private textoMistura As String
    Private textoMisturaEntorpecentes As String

    Public Property EHPRELIMINAR() As Boolean
        Get
            Return _ehPreliminar
        End Get
        Set(value As Boolean)
            _ehPreliminar = value
        End Set
    End Property
    Public Property getUcPreambulo() As ucPreambulo

        Get
            Return ucPreambulo

        End Get

        Set(ByVal value As ucPreambulo)
            ucPreambulo = value

        End Set

    End Property


    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        pnlDados.Controls.Add(ucPreambulo)

        If Not DesignMode Then
            Sep = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
            pnlDados.AutoSize = True

        End If
    End Sub




    Private Sub frmAvaliacao_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try
            Me.WindowState = FormWindowState.Maximized
            generica.redimensionaControle(pnlDados)
            generica.redimensionaControle(pnlItens)
            ucPreambulo.ucPerito.Enabled = True
            ucPreambulo.selecionaIdTipoPericia = ucPreambulo.ID_TIPO_PERICIA
            ucPreambulo.selecionaIdNatureza = ucPreambulo.ID_NATUREZA
            ucPreambulo.pnlNatureza.Enabled = False
            Me.ControlBox = False
            ucPreambulo.getVitima = "A saúde pública"
            '  ucPreambulo.getNaturezaDelito = "Não informada"
            pnlResultado.Controls.Add(_ucDrogas)
            ucPreambulo.lblTitulo.Text = "EXAME TOXICOLÓGICO DEFINITIVO"
           

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    '--------------------------------------------------------------------------------------------------------------------------------
    ' FUNÇÃO QUE IRÁ GERAR O LAUDO
    '--------------------------------------------------------------------------------------------------------------------------------
    Private Sub geraLaudo()

        generica.tempo = Now

        Dim oWordTemp As New WordAppl
        Dim registroBo As New registroBO

        '-----------------------------------------------------------------------------------------
        ' ABRE O ARQUIVO WORD
        '-----------------------------------------------------------------------------------------

        If registroGlobal.registroPincipal.ID_REGISTRO > 0 Or ucPreambulo.ehNovo Then

            pb.zeraContador()
            pb.stepBarra(10)
            pb.Visible = True
            pb.stepBarra(10)

            '-----------------------------------------------------------------------------------------
            ' GRAVA REGISTRO NA BASE DE DADOS
            '-----------------------------------------------------------------------------------------
            pb.stepBarra(10)
            Try

                If generica.gravaBanco Then
                    Dim regBO As New registroBO
                    '------------------------------------------------------------------------------------
                    ' VERFICA SE É UM NOVO REGISTRO OU SE É UM REGISTRO JÁ ARMAZENADO NA BASE DE DADOS
                    '------------------------------------------------------------------------------------
                    pb.stepBarra(10)
                    pb.txtMensagem.Text = "Inserindo informações no banco de dados do sistema"

                    Dim textoProva As String = String.Empty

                    'For Each linha As DataGridViewRow In gridDrogas.Rows
                    '    textoProva = textoProva & linha.Cells(3).Value & "/"
                    'Next
                    'If textoProva.Length > 255 Then
                    '    textoProva = textoProva.Substring(0, 254)
                    'End If
                    '-------------------------------------------------------------------------------
                    ' POPULA O ATRIBUTO MATERIALRECIBO DA TABELA REGISTRO
                    '-------------------------------------------------------------------------------

                    If Not cmbInvolucro.Text.Equals(String.Empty) Then
                        If cmbInvolucro.Text.ToUpper.Equals("INVÓLUCRO DE SEGURANÇA") Then
                            textoProva = cmbInvolucro.Text & " nº " & txtInvolucroIC.Text
                        Else
                            textoProva = cmbInvolucro.Text
                        End If
                    Else
                        textoProva = "NENHUM MATERIAL"
                    End If

                    pb.stepBarra(10)

                    Dim registroGravado As Integer

                    If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO = False Then

                        '-----------------------------------------------------------------------------------------
                        ' RETORNO O NOME DO DIRETORIO A SER CRIADO
                        '-----------------------------------------------------------------------------------------
                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                   ucPreambulo.getNumeroLaudo, "CONSTATAÇÃO PRELIMINAR", ucPreambulo.getIndiciado, ucPreambulo.getVitima)

                        registroGravado = regBO.updateRegistro(registroGlobal.registroPincipal, _
                                                               textoProva, ucPreambulo.getIdPeritoSelecionado, _
                                                               nomeDiretorio, ucPreambulo)
                        pb.stepBarra(10)
                        pb.txtMensagem.Text = "Criando o registro na base de dados"

                        mensagem = (" O laudo n°" & registroGravado & " foi atualizado com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                    Else

                        Dim reg As New registroVO
                        Dim ultimo As Integer = regBO.getUltimoRegistro
                        Dim registroTemporario As Integer = 0
                        If ultimo <> ucPreambulo.getNumeroLaudo Then
                            registroTemporario = ucPreambulo.getNumeroLaudo
                            ucPreambulo.getNumeroLaudo = ultimo
                        End If
                        '-----------------------------------------------------------------------------------------
                        ' RETORNO O NOME DO DIRETORIO A SER CRIADO
                        '-----------------------------------------------------------------------------------------
                        nomeDiretorio = generica.retornaNomeDiretorio(ucPreambulo.getAno, _
                                                                   ucPreambulo.getNumeroLaudo, "EXAME DEFINITIVO", ucPreambulo.getIndiciado, ucPreambulo.getVitima)

                        reg = generica.populaRegistro(ucPreambulo, generica.retornaNomeArquivoCompleto(nomeDiretorio & ".doc", nomeDiretorio), textoProva)
                        registroGravado = regBO.insereRegistro(reg)
                        registroGlobal.registroPincipal = registroBo.getRegistroSimplificado(registroGravado, ucPreambulo.getAno)
                        If registroTemporario = 0 Then
                            mensagem = (" O laudo n°" & registroGlobal.registroPincipal.NUM_REGISTRO & " foi inserido com sucesso na base de dados. Clique no ícone do WORD para visualizar o laudo.")
                        Else
                            mensagem = (" O laudo n°" & ultimo & " foi inserido com sucesso na base de dados. O laudo não foi gravado com o número inicial " & registroTemporario & " pelo fato de outro usuário ter inserido este número de laudo no banco de dados. Clique no ícone do WORD para visualizar o laudo.")
                        End If
                        pb.stepBarra(10)
                    End If

                    pb.txtMensagem.Text = "Criando o diretório no qual o arquivo ficará armazenado"

                    '------------------------------------------------------------------------------------
                    ' INSERE DADOS NA TABELA PONTUACAO
                    '------------------------------------------------------------------------------------

                    Dim pontuacaobo As New pontuacaoBO
                    Dim pontuacao As New pontuacaoVO
                    Dim i As Integer

                    Try
                        If ucPreambulo.ehNovo Then
                            With pontuacao
                                .USUARIO = New usuarioVO With {.ID_USUARIO = ucPreambulo.getIdPeritoSelecionado}
                                .REGISTRO = New registroVO With {.ID_REGISTRO = registroGlobal.registroPincipal.ID_REGISTRO}
                                .PONTUACAO = registroGlobal.registroPincipal.NATUREZA.PONTOS_ATENDIMENTO
                                .TIPO_OCORRENCIA = "ATENDIMENTO"
                                .DATA_ALTERACAO = Nothing
                            End With

                            i = pontuacaobo.inserePontuacao(pontuacao)

                        Else
                            i = pontuacaobo.upDatePontuacao(ucPreambulo.getIdPeritoSelecionado, registroGlobal.registroPincipal)
                        End If
                    Catch ex As Exception
                        generica.gravaErro(ex)
                        erroNivel = 2
                        Exit Sub
                    End Try
                Else
                    mensagem = ("O sistema está configurado para não gravar registros na base de dados do sistema de registro eletrônico. Para habilitar, clique em configurações > Configurar aplicação e marque a opção <<SIM>>>. Apenas o laudo de n° " & ucPreambulo.getNumeroLaudo & " será gerado. Clique no ícono do WORD para visualizar o documento.")
                End If

                '-------------------------------------------------------------------------------------
                ' INSERE DADOS ITENS DA TABELA NA BASE LOCAL
                '-------------------------------------------------------------------------------------
            Catch ex As Exception
                generica.encerraProcessosWord()
                habilita(False, , False)
                generica.gravaErro(ex)
                erroNivel = 1
                Exit Sub
            End Try

            Try

                Dim diretorio As String = System.Configuration.ConfigurationManager.AppSettings("dirTemplateword")
                oWordTemp.OpenModelo("definitivoComPreliminar.dot")
                oWordTemp.SaveAs(nomeDiretorio, nomeDiretorio & ".doc")
                oWordTemp.Quit()
                oWordTemp = Nothing
                '------------------------------------------------------------------------------------------------
                ' CRIA O PREMABULO
                '------------------------------------------------------------------------------------------------
                Dim oWord As New WordAppl
                oWord.Open(nomeDiretorio, nomeDiretorio & ".doc")
                oWord.criaPreambulo(ucPreambulo)
                pb.stepBarra(10)
                pb.txtMensagem.Text = "Criando o cabeçalho do documento word"
                '------------------------------------------------------------------------------------------------
                ' INSERE ITENS NA TABELA DO DOCUMENTO WORD
                '------------------------------------------------------------------------------------------------
                pb.stepBarra(10)
                pb.txtMensagem.Text = "Inserindo informações no documento word criado"
                '------------------------------------------------------------------------------------------------
                ' VERIFICA SE O EXAME DEU POSITIVO
                '------------------------------------------------------------------------------------------------

                Dim textoMaterial As String = Nothing

                If gridDrogas.RowCount > 1 Then
                    textoMaterial = "Materiais enviados a este laboratório para exames em "
                Else
                    textoMaterial = "Material enviado a este laboratório para exames em "
                End If

                If cmbInvEnvio.Text.Equals("invólucro de segurança") Then
                    oWord.FindAndReplacement("<<txtMaterialEnviado>>", textoMaterial & generica.montaData(txtDataAcionamento.Text) & " em " & cmbInvEnvio.Text & " nº " & txtInvEnvio.Text & ".")
                Else
                    oWord.FindAndReplacement("<<txtMaterialEnviado>>", textoMaterial & generica.montaData(txtDataAcionamento.Text) & " em " & cmbInvEnvio.Text & ".")
                End If

                oWord.insereDadosDrogas(gridDrogas, 2, tevePeso)

                Dim textoInvolucroIC As New StringBuilder
                Dim textoInvolucroAut As New StringBuilder
                Dim textoPluralSingular As String = Nothing


                textoInvolucroIC.Append("Anexo, devolve-se o restante do material examinado em ").Append(cmbInvolucro.Text)

                If cmbInvolucro.Text.Equals("invólucro de segurança") Then
                    textoInvolucroIC.Append(" nº ").Append(txtInvolucroIC.Text)
                End If

                textoInvolucroIC.Append(", que ficará como contraprova, sob guarda da unidade requisitante.")
               

        'If cmbInvolucro.Text.Equals("invólucro de segurança") Then
        '    textoInvolucroIC01.Append("invólucro de segurança nº ").Append(txtInvolucroIC.Text).Append(" que segue anexado a este laudo.")
        'Else
        '    textoInvolucroIC01.Append(cmbInvolucro.Text).Append(" devidamente lacrado e rubricado que segue anexado a este laudo.")
        'End If

        'If cmbInvolucroAut.Text.Equals("invólucro de segurança") Then
        '    textoInvolucroAut01.Append("invólucro de segurança nº ").Append(txtInvolucroAut.Text).Append(".")
        'Else
        '    textoInvolucroAut01.Append(cmbInvolucroAut.Text).Append(" devidamente lacrado e rubricado por este signatário.")
        'End If

        oWord.FindAndReplacement("<<txtInvolucroIC>>", textoInvolucroIC.ToString)


        'If fracionar Then
        '    oWord.FindAndReplacement("<<txtInvolucroAut>>", textoInvolucroAut.ToString)
        '    oWord.FindAndReplacement("<<txtInvolucroAut01>>", textoInvolucroAut01.ToString)
        'Else
        '    oWord.FindAndReplacement("<<txtInvolucroAut>>", String.Empty)
        '    oWord.FindAndReplacement("<<txtInvolucroAut01>>", String.Empty)
        'End If

        oWord.criaAssinatura(ucPreambulo)

        oWord.Save()
        oWord.Quit()
        oWord = Nothing
        pb.stepBarra(10)
        pb.txtMensagem.Text = "Finalizando o documento"

        '-----------------------------------------------------------------------------------------------------------------------
        ' CHAMA ROTINA PARA LIMPAR CAMPOS DO CONTROLE E DO DATAGRID VIEW
        '-----------------------------------------------------------------------------------------------------------------------

            Catch exc As Exception
            generica.encerraProcessosWord()
            generica.gravaErro(exc)
            erroNivel = 2
            Exit Sub
        End Try
        Else

            '----------------------------------------------------------------------------------------------------------------------------
            ' CASO SEJA UM ARQUIVO QUE JÁ SE ENCONTRA CADASTRADO NA BASE DE DADOS
            '----------------------------------------------------------------------------------------------------------------------------
            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                habilita(False)
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " já existe registrado na base de dados.Clique no ícone do WORD para visualizar o laudo.")
            Else
                mensagem = ("O laudo n° " & ucPreambulo.getNumeroLaudo & "/" & ucPreambulo.getAno & " não foi encontrado na base de dados.")
            End If
        End If
        MsgBox(mensagem)
    End Sub

    Private Sub habilita(ByVal habilita As Boolean, _
                           Optional ByVal habilitaBarra As Boolean = Nothing, _
                           Optional ByVal habilitaVerWord As Boolean = Nothing, _
                            Optional ByVal habilitaPainelItens As Boolean = Nothing, _
                            Optional ByVal habilitaNatureza As Boolean = Nothing, _
                            Optional ByVal habilitaGridIc As Boolean = Nothing, _
                            Optional ByVal habilitaGrupoSuperior As Boolean = Nothing, _
                            Optional ByVal habilitaPainelInvolucro As Boolean = Nothing)

        If Not IsNothing(habilitaVerWord) Then
            ucPreambulo.btnVerWord.Visible = habilitaVerWord
        End If

        ucPreambulo.btnGeraLaudo.Enabled = habilita
        ucPreambulo.habilitaCampos(habilita)
        ucPreambulo.selecionaIdTipoPericia = ID_TIPO_PERICIA

        If _ehPreliminar Then
            ucPreambulo.selecionaIdNatureza = ID_NATUREZA
        Else
            ucPreambulo.selecionaIdNatureza = ID_NATUREZA
        End If

        ucPreambulo.pnlNatureza.Enabled = habilitaNatureza

        If Not IsNothing(habilitaBarra) Then
            pb.Visible = habilitaBarra
            pb.zeraContador()
        End If

        If Not IsNothing(habilitaPainelItens) Then
            pnlItens.Enabled = habilitaPainelItens

        End If
    End Sub

    Private Sub btnLimpa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            ucPreambulo.limparCampos()
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub btnWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub chamaEventoLimpaCampos(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickLimpaCampos
        Try
            ucPreambulo.limparCampos()
            limpaCampos()
            ucPreambulo.populaDados()
            habilita(True, False, False, True, False, True, True, False)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub


    Private Sub chamaGeraLaudo()

        Try

            For Each controle In pnlItens.Controls
                erro.SetError(controle, String.Empty)
            Next

            'COPIAR ESTE TRECHO
            Dim regBO As New registroBO
            Dim registroVOTemp As New registroVO
            Dim novoRegistro As Integer = 0
            registroVOTemp = regBO.getRegistroSimplificado(ucPreambulo.getNumeroLaudo, ucPreambulo.getAno)

            If registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO And ucPreambulo.ehNovo Then
                novoRegistro = regBO.getUltimoRegistro
                MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi inserido na base de dados por outro usuário logado no sistema. O laudo será gerado com o número " & novoRegistro)
                ucPreambulo.getNumeroLaudo = novoRegistro

            ElseIf registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO Then
                MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi atualizado na base de dados por outro usuário logado no sistema.")
                Exit Sub
            End If

            'FIM DO TRECHO

            If (generica.validaCampos(ucPreambulo)) Then
                If validaCampos() Then
                    pb.Visible = True
                    generica.salvaPreambulo(ucPreambulo)
                    geraLaudo()
                    If erroNivel > 0 Then

                        If generica.rollBack(registroGlobal.registroPincipal, nomeDiretorio, erroNivel, ucPreambulo.ehNovo, ucPreambulo) Then
                            MsgBox("O sistema recuperou de um erro grave e nenhuma informação foi gravada. Para registrar um novo laudo, clique em novo laudo")
                            erroNivel = 0
                            ucPreambulo.btnLimpaCampos.PerformClick()
                        End If

                    Else
                        ' ucPreambulo.txtDataEntrada.Enabled = False
                        habilita(False, , True, False, False, True, False)
                    End If
                End If
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub


    Public Sub chamaEventoGeraLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickGeraLaudo

        For Each controle In pnlItens.Controls
            erro.SetError(controle, String.Empty)
        Next

        Try
            'COPIAR ESTE TRECHO
            Dim regBO As New registroBO
            Dim registroVOTemp As New registroVO
            Dim novoRegistro As Integer = 0
            registroVOTemp = regBO.getRegistroSimplificado(ucPreambulo.getNumeroLaudo, ucPreambulo.getAno)

            If registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO And ucPreambulo.ehNovo Then
                novoRegistro = regBO.getUltimoRegistro
                MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi inserido na base de dados por outro usuário logado no sistema. O laudo será gerado com o número " & novoRegistro)
                ucPreambulo.getNumeroLaudo = novoRegistro

            ElseIf registroVOTemp.NUM_REGISTRO > 0 And registroVOTemp.GEROULAUDO Then
                MsgBox("Laundo n° " & registroVOTemp.NUM_REGISTRO & " já foi atualizado na base de dados por outro usuário logado no sistema.")
                Exit Sub
            End If

            'FIM DO TRECHO

            If (generica.validaCampos(ucPreambulo)) Then
                If gridDrogas.Rows.Count = 0 Then
                    MsgBox("Adicione pelo menos uma substância na lista")

                Else
                    '------------------------------------------------------
                    ' BUSCA NO GRID SE OCORRERÁ A EXIBIÇÃO DE MAIS DE UM INVÓLUCRO
                    '------------------------------------------------------
                    'For Each linha As DataGridViewRow In gridDrogas.Rows
                    '    If CType(linha.Cells("EHPESOIGUAL").Value, Boolean) = True Then
                    '        temInvolucros = True
                    '        Exit For
                    '    Else
                    '        temInvolucros = False
                    '    End If
                    'Next

                    habilitaPainelInferior(False)
                    exibeInvolucro()
                End If
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub exibeInvolucro()

        Try
            pnlInvolucro.Visible = True
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Function validaInvolucro() As Boolean

        Dim isOk As Boolean = False
        Try
            If cmbInvolucro.Text.Equals(String.Empty) Then
                erro.SetError(cmbInvolucro, "Selecione a forma de acondicionamento")
            Else
                erro.SetError(cmbInvolucro, String.Empty)
                If cmbInvolucro.Text.Equals("invólucro de segurança") Then
                    If txtInvolucroIC.Text.Equals(String.Empty) Then
                        erro.SetError(txtInvolucroIC, "Campo obrigatório")
                    Else
                        erro.SetError(txtInvolucroIC, String.Empty)
                        isOk = True
                    End If
                Else
                    isOk = True
                End If
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
        Return isOk
    End Function
    Private Sub executaGeraLaudos()
        Try
            pb.Visible = True
            generica.salvaPreambulo(ucPreambulo)
            geraLaudo()
            If erroNivel > 0 Then
                If generica.rollBack(registroGlobal.registroPincipal, nomeDiretorio, erroNivel, ucPreambulo.ehNovo, ucPreambulo) Then
                    MsgBox("O sistema recuperou de um erro grave e nenhuma informação foi gravada. Para registrar um novo laudo, clique em novo laudo")
                    erroNivel = 0
                    ucPreambulo.btnLimpaCampos.PerformClick()
                End If
            Else
                ' ucPreambulo.txtDataEntrada.Enabled = False
                habilita(False, , True, False, False, True, False)
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Function validaCampos() As Boolean

        If cmbInvEnvio.Text.Equals(String.Empty) Then
            erro.SetError(cmbInvEnvio, "Campo obrigatório")
            cmbInvEnvio.Focus()
            Return False
        Else
            erro.SetError(cmbInvEnvio, "")
        End If

        If cmbInvEnvio.Text.Equals("invólucro de segurança") Then
            If txtInvEnvio.Text.Equals(String.Empty) Then
                erro.SetError(txtInvEnvio, "Campo obrigatório")
                txtInvEnvio.Focus()
                Return False
            Else
                erro.SetError(txtInvEnvio, String.Empty)
            End If
        Else
            erro.SetError(cmbInvEnvio, "")
        End If

        If _ucDrogas.getIndiceDroga <= 0 Then
            erro.SetError(_ucDrogas, "Campo obrigatório")
            _ucDrogas.Focus()
            Return False
        Else
            erro.SetError(_ucDrogas, "")
        End If


        If (cmbDescricao.Text.Length = 0) Then
            erro.SetError(cmbDescricao, "Preenchimento obrigatório")
            cmbDescricao.Focus()
            Return False
        Else
            erro.SetError(cmbDescricao, "")
        End If
        If (cmbCor.Text.Length = 0) Then
            erro.SetError(cmbCor, "Preenchimento obrigatório")
            cmbCor.Focus()
            Return False
        Else
            erro.SetError(cmbCor, "")
        End If
        If (txtQtdeUnidades.Text.Length = 0) Then
            erro.SetError(txtQtdeUnidades, "Preenchimento obrigatório")
            txtQtdeUnidades.Focus()
            Return False
        Else
            erro.SetError(txtQtdeUnidades, "")
        End If
        If (cmbAcondicionamento.Text.Length = 0) Then
            erro.SetError(cmbAcondicionamento, "Preenchimento obrigatório")
            cmbAcondicionamento.Focus()
            Return False
        Else
            erro.SetError(cmbAcondicionamento, "")
        End If

        'If rbSim.Checked Then
        '    If txtPesoTotal.Text.Equals(String.Empty) Then
        '        erro.SetError(txtPesoTotal, "Campo obrigatório")
        '        Return False
        '    Else
        '        erro.SetError(txtPesoTotal, String.Empty)
        '    End If
        '    If txtPesoContraProva.Text.Equals(String.Empty) Then
        '        erro.SetError(txtPesoContraProva, "Campo obrigatório")
        '        Return False
        '    Else
        '        erro.SetError(txtPesoContraProva, String.Empty)
        '    End If
        '    If CDbl(txtPesoContraProva.Text) > CDbl(txtPesoTotal.Text) Then
        '        erro.SetError(txtPesoTotal, "O peso da contraprova não pode ser maior que o total apreendido")
        '        Return False
        '    Else
        '        erro.SetError(txtPesoContraProva, String.Empty)
        '    End If
        'Else
        '    erro.SetError(txtPesoTotal, String.Empty)
        '    erro.SetError(txtPesoContraProva, String.Empty)
        'End If
        Return True
    End Function

    Private Sub chamaEventoVisualizaWord(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickVisualizaWord
        Try

            If registroGlobal.registroPincipal.NUM_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then
                generica.visualizaWord("", "", registroGlobal.registroPincipal.NOME_DIRETORIO)
            Else
                generica.visualizaWord(nomeDiretorio, nomeDiretorio & ".doc")
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Private Sub chamaEventoNovoLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickNovoLaudo
        Try
            ucPreambulo.limparCampos()
            limpaCampos()
            ucPreambulo.populaDados()
            ucPreambulo.getVitima = "A saúde pública"
            habilita(True, False, False, True, False, False, , False)
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub

    Public Sub mudouIndiceComboDrogas(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ucDrogas.onSelectedIndexChanged
        Try
            If _ucDrogas.getIndiceDroga > 0 Then
                txtQtdeUnidades.Focus()
                Select Case _ucDrogas.getDrogas.ToString
                    Case "MACONHA"
                        preencheDrogas(4, 4)
                    Case "COCAÍNA"
                        preencheDrogas(1, 1)
                    Case "LOLÓ"
                        preencheDrogas(10, 3)
                    Case "LANÇAPERFUME"
                        preencheDrogas(10, 3)
                    Case "CRACK"
                        preencheDrogas(0, 0)
                    Case "HAXIXE"
                        preencheDrogas(5, 4)
                    Case "FRUTOS DE MACONHA"
                        preencheDrogas(6, 4)
                    Case "ECSTASY"
                        preencheDrogas(7, -1)
                    Case "LSD"
                        preencheDrogas(9, -1)
                    Case Else
                        cmbDescricao.SelectedIndex = -1
                        cmbCor.SelectedIndex = -1
                        cmbDescricao.Focus()
                End Select
            End If
            '--------------------------------------------------------------------
            ' ROTINAS PARA TRATAR DOS CASOS ESPECIAIS 
            '--------------------------------------------------------------------
            'SOLVENTE
            If _ucDrogas.getDrogas.Equals("SOLVENTES") Then
                grpMistura.Visible = True
                grpMistura.Enabled = True
            Else
                grpMistura.Visible = False
                grpMistura.Enabled = False
            End If
            'MISTURA DE ENTORPECENTES
            If _ucDrogas.getDrogas.Equals("MISTURA DE ENTORPECENTES") Then
                grpMisturaEntorpecente.Visible = True
                grpMisturaEntorpecente.Enabled = True
            Else
                grpMisturaEntorpecente.Visible = False
                grpMisturaEntorpecente.Enabled = False
            End If

            'ANTIDEPRESSIVOS
            If _ucDrogas.getDrogas.Equals("SUBSTÂNCIA TERAPÊUTICA ANTIDEPRESSIVA") Then
                grpAntiDepressivo.Visible = True
                grpAntiDepressivo.Enabled = True
            Else
                grpAntiDepressivo.Visible = False
                grpAntiDepressivo.Enabled = False
            End If

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub


    'Private Sub txtQtdeUnidades_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtQtdeUnidades.KeyPress
    '    If Not (Char.IsNumber(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    'End Sub

    Private Sub preencheDrogas(ByVal ind_descricao As Integer, ByVal ind_cor As Integer)

        cmbDescricao.SelectedIndex = ind_descricao
        cmbCor.SelectedIndex = ind_cor

    End Sub


    Public Sub chamaEventoBuscaLaudo(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ucPreambulo.onClickBuscaLaudo
        Try
            Dim itens_avaliacaoBO As New itens_avaliacaoBO

            If _ehPreliminar Then
                ucPreambulo.getIdNatureza = ucPreambulo.ID_NATUREZA
            Else
                ucPreambulo.getIdNatureza = ucPreambulo.ID_NATUREZA
            End If
            ucPreambulo.buscaDadosLaudo(ucPreambulo, Me.MdiParent)
            limpaCampos()
            If registroGlobal.registroPincipal.ID_REGISTRO > 0 And registroGlobal.registroPincipal.GEROULAUDO Then

                habilita(False, False, True, False, False)
            Else
                habilita(True, False, False, True, False, True, False)
            End If
        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub txtPesoIC_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtInvolucro_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub
    Private Sub txtInvolucroIC_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtPeso_KeyPress1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtPeso_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)

        'Dim fracionar As Boolean = False
        'If txtPeso.Text.Length > 0 Then
        '    If CType(txtPeso.Text, Double) > 10 And rdNao.Checked Then

        '        If MsgBox("Quantidade superior a 10 gramas. Deseja fracionar a quantidade ?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then

        '            fracionar = True
        '        End If

        '        If fracionar Then
        '            lblMensagem.Text = ("Quantidade superior a 10 gramas. Favor informar quantidade a ser encaminhada para o IC")
        '            lblMensagem.Visible = True
        '            grpDrogaIC.Visible = True
        '            grpDrogaIC.Enabled = True
        '            'If grpSuperior.Visible = True And rdSim.Checked Then
        '            '    grpDrogaIC.Visible = True
        '            '    grpDrogaIC.Enabled = True
        '            'Else
        '            '    grpDrogaIC.Visible = False
        '            '    grpDrogaIC.Enabled = False
        '            'End If
        '        Else
        '            lblMensagem.Text = String.Empty
        '            lblMensagem.Visible = False
        '            grpDrogaIC.Visible = False
        '        End If
        '    End If

        'End If
    End Sub
    Private Sub limpaCampos()
        Try
            For Each controle In pnlItens.Controls
                If TypeOf (controle) Is GroupBox Then
                    For Each ctrl In CType(controle, GroupBox).Controls
                        If TypeOf (ctrl) Is TextBox Then
                            CType(ctrl, TextBox).Text = String.Empty
                            erro.SetError(ctrl, String.Empty)
                        End If
                    Next
                End If
            Next
            limpaCamposDrogas()
            gridDrogas.Rows.Clear()
            tevePeso = False
            erroNivel = 0
            mensagem = String.Empty
            nomeDiretorio = Nothing
            cmbInvEnvio.SelectedIndex = -1
            txtInvEnvio.Text = String.Empty

        Catch ex As Exception
            generica.gravaErro(ex)
        End Try
    End Sub
    Private Sub TextboxNumeric_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)

        Dim nonNumberEntered As Boolean
        nonNumberEntered = True

        If (e.KeyChar >= Convert.ToChar(48) AndAlso e.KeyChar <= Convert.ToChar(57)) OrElse e.KeyChar = Convert.ToChar(8) OrElse e.KeyChar = Convert.ToChar(44) Then
            nonNumberEntered = False
        End If
        If nonNumberEntered = True Then
            ' Stop the character from being entered into the control

            ' since it is non-numerical.
            e.Handled = True
        Else
            e.Handled = False
        End If
    End Sub
    Private Sub txtPesoTotal_KeyPress(sender As Object, e As KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub
    Private Sub cmbDescricao_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbDescricao.SelectedIndexChanged
        If IsNothing(cmbDescricao.SelectedItem) Then
            erro.SetError(cmbDescricao, "Preenchimento obrigatório")
        Else
            erro.SetError(cmbDescricao, "")
        End If
    End Sub


    Private Sub cmbCor_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbCor.SelectedIndexChanged
        If IsNothing(cmbCor.SelectedItem) < 0 Then
            erro.SetError(cmbCor, " Preenchimento obrigatório")
        Else
            erro.SetError(cmbCor, "")
        End If
    End Sub

    Private Sub cmbAcondicionamento_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbAcondicionamento.SelectedIndexChanged
        If cmbAcondicionamento.SelectedIndex < 0 Then
            erro.SetError(cmbAcondicionamento, " Preenchimento obrigatório")
        Else
            erro.SetError(cmbAcondicionamento, "")
        End If
    End Sub
    Private Sub cmbAdicionar_Click(sender As Object, e As EventArgs) Handles btnAdicionar.Click

        Dim substancia As New StringBuilder
        Dim exame As New StringBuilder
        Dim acondicionamento As New StringBuilder

        If validaCampos() Then

            '------------------------------------------------------------------------------------
            ' ALTERAÇÕES REALIZADAS DE ACORDO COM MANIFESTO DA SPTC
            '------------------------------------------------------------------------------------
            substancia.Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(": ")
            substancia.Append(generica.formataNumeroMaterial(txtQtdeUnidades.Text)).Append(" (").Append(generica.NumeroToExtenso(txtQtdeUnidades.Text)).Append(") ")
            If cmbCor.Text.Equals("incolor") Then
                substancia.Append(cmbAcondicionamento.Text).Append(" contendo ").Append(cmbDescricao.Text).Append(" ").Append(cmbCor.Text).Append(".")
            Else
                substancia.Append(cmbAcondicionamento.Text).Append(" contendo ").Append(cmbDescricao.Text).Append(" de coloração ").Append(cmbCor.Text).Append(".")
            End If

            exame.Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(": ")
            Select Case _ucDrogas.getDrogas.ToUpper

                Case "SOLVENTES"
                    exame.Append("realizada a análise na substância descrita no ").Append("MATERIAL "). _
                        Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(" foi constatada a presença de uma mistura contendo "). _
                        Append(textoMistura).Append(". ").Append(_ucDrogas.getResultado)
                Case "MISTURA DE ENTORPECENTES"
                    exame.Append("realizada a análise na substância descrita no ").Append("MATERIAL "). _
                        Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(" foi constatada a presença de uma mistura contendo "). _
                        Append(textoMistura).Append(". ").Append(textoMisturaEntorpecentes)
                Case "SUBSTÂNCIA TERAPÊUTICA ANTIDEPRESSIVA"
                    exame.Append("realizada a análise na substância descrita no ").Append("MATERIAL "). _
                       Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(" foi constatada a presença de substância  utilizada terapeuticamente como antidepressivo e encontra-se enquadrada na Portaria nº 344 da Secretaria Nacional de Vigilância Sanitária do Ministério da Saúde de 12/05/98 como "). _
                       Append(textoMisturaEntorpecentes).Append(". ")
                Case Else
                    exame.Append("realizada a análise na substância descrita no ").Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(_ucDrogas.getResultado)
            End Select

            acondicionamento.Append("MATERIAL ").Append(generica.formataNumeroMaterial(gridDrogas.RowCount + 1)).Append(": ")
            gridDrogas.Rows.Add(substancia.ToString, exame.ToString, acondicionamento.ToString, _ucDrogas.getDrogas)

        substancia.Clear()
        exame.Clear()
        acondicionamento.Clear()
        limpaCamposDrogas()
        limpaErros()
        pnlResultado.Focus()


        End If
    End Sub

    Private Sub limpaErros()
        erro.SetError(cmbDescricao, String.Empty)
        erro.SetError(cmbAcondicionamento, String.Empty)
        erro.SetError(cmbCor, String.Empty)
        erro.SetError(_ucDrogas, String.Empty)
    End Sub
   
    Private Sub limpaCamposDrogas()
        cmbDescricao.SelectedIndex = -1
        cmbCor.SelectedIndex = -1
        cmbAcondicionamento.SelectedIndex = -1
        _ucDrogas.cmbDroga.SelectedIndex = -1
        txtQtdeUnidades.Text = String.Empty
    End Sub
    
    Private Sub habilitaPainelInferior(ByVal habilita As Boolean)
        pnlItens.Enabled = habilita

    End Sub
    Private Sub cmdOk_Click(sender As Object, e As EventArgs)

        If (generica.validaCampos(ucPreambulo)) Then
            If gridDrogas.Rows.Count = 0 Then
                MsgBox("Adicione pelo menos uma substância na lista")
            Else
                pb.Visible = True
                generica.salvaPreambulo(ucPreambulo)
                geraLaudo()
                If erroNivel > 0 Then
                    If generica.rollBack(registroGlobal.registroPincipal, nomeDiretorio, erroNivel, ucPreambulo.ehNovo, ucPreambulo) Then
                        MsgBox("O sistema recuperou de um erro grave e nenhuma informação foi gravada. Para registrar um novo laudo, clique em novo laudo")
                        erroNivel = 0
                        ucPreambulo.btnLimpaCampos.PerformClick()
                    End If
                Else
                    ' ucPreambulo.txtDataEntrada.Enabled = False
                    habilita(False, , True, False, False, True, False)
                End If

            End If
        End If

    End Sub
    Private Sub Button1_Click_2(sender As Object, e As EventArgs)
        habilitaPainelInferior(True)
    End Sub
    Private Sub chkOutros_CheckedChanged(sender As Object, e As EventArgs) Handles chkOutros.CheckedChanged
        If chkOutros.Checked Then
            txtOutro.Visible = True
        Else
            txtOutro.Visible = False
        End If
    End Sub
    Private Sub txtQtdeUnidades_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtQtdeUnidades.KeyPress
        If Not (Char.IsNumber(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub btnMistura_Click(sender As Object, e As EventArgs) Handles btnMistura.Click
        Dim texto As New StringBuilder
        textoMistura = String.Empty
        Dim indice As Integer = 0
        Dim passou As Boolean = False

        For Each controle As Control In grpMistura.Controls
            If TypeOf (controle) Is CheckBox Then
                If DirectCast(controle, CheckBox).Checked Then
                    If DirectCast(controle, CheckBox).Text.ToLower.Equals("outros") Then
                        texto.Append(txtOutro.Text).Append(", ")
                    Else
                        texto.Append(DirectCast(controle, CheckBox).Text).Append(", ")
                    End If
                    passou = True
                End If
            End If
        Next





        If passou Then
            indice = texto.ToString.Substring(0, texto.ToString.Length - 1).ToLower.LastIndexOf(",")
            textoMistura = texto.ToString.Substring(0, texto.ToString.Length - 1).ToLower
            indice = textoMistura.Substring(0, indice).LastIndexOf(",")
            textoMistura = textoMistura.Substring(0, indice) & " e " & textoMistura.Substring(indice + 1)
            textoMistura.ToString.Substring(0, textoMistura.ToString.LastIndexOf(","))

            limpaCheck()
            texto = Nothing
            grpMistura.Visible = False
            cmbDescricao.Focus()
        Else
            MsgBox("Selecione pelo menos uma opção ou saia da tela clicando no 'X'")
        End If

    End Sub

    Private Sub limpaCheck()
        For Each controle As Control In grpMistura.Controls
            If TypeOf (controle) Is CheckBox Then
                DirectCast(controle, CheckBox).Checked = False
            End If
        Next
        For Each controle As Control In grpMisturaEntorpecente.Controls
            If TypeOf (controle) Is CheckBox Then
                DirectCast(controle, CheckBox).Checked = False
            End If
        Next
        rbA1.Checked = True

    End Sub

    Private Sub btnSairMistura_Click(sender As Object, e As EventArgs) Handles btnSairMistura.Click
        grpMistura.Visible = False
        grpMistura.Enabled = False
        limpaCheck()
    End Sub
    Private Sub chkOutrosMistura_CheckedChanged(sender As Object, e As EventArgs) Handles chkOutrosMistura.CheckedChanged
        If chkOutrosMistura.Checked Then
            txtMisturaDrogas.Visible = True
        Else
            txtMisturaDrogas.Visible = False
        End If
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Dim textoDrogas As New StringBuilder
        Dim textoResultado As New StringBuilder
        Dim indice As Integer = 0
        Dim passou As Boolean = False

        For Each controle As Control In grpMisturaEntorpecente.Controls
            If TypeOf (controle) Is CheckBox Then
                If DirectCast(controle, CheckBox).Checked Then
                    If DirectCast(controle, CheckBox).Text.ToLower.Equals("outros") Then
                        textoDrogas.Append(txtMisturaDrogas.Text).Append(",")
                    Else
                        textoDrogas.Append(DirectCast(controle, CheckBox).Text.ToUpper).Append(", ")
                        textoResultado.Append(DirectCast(controle, CheckBox).Tag).Append(Environment.NewLine)
                    End If
                    passou = True
                End If
            End If
        Next
        If passou Then
            'indice = textoDrogas.ToString.Substring(0, textoDrogas.ToString.Length - 1).ToLower.LastIndexOf(",")
            'textoMistura = textoDrogas.ToString.Substring(0, textoDrogas.ToString.Length - 1).ToLower
            'textoMistura = textoMistura.Substring(0, indice) & " e " & textoMistura.Substring(indice + 1)
            'textoMisturaEntorpecentes = textoResultado.ToString

            indice = textoDrogas.ToString.Substring(0, textoDrogas.ToString.Length - 1).ToLower.LastIndexOf(",")
            textoMistura = textoDrogas.ToString.Substring(0, textoDrogas.ToString.Length - 1).ToLower
            textoMistura = textoMistura.Substring(0, indice) & " e " & textoMistura.Substring(indice + 1)
            textoMisturaEntorpecentes = textoResultado.ToString

            textoDrogas.ToString.Substring(0, textoDrogas.ToString.LastIndexOf(","))


            limpaCheck()
            textoDrogas = Nothing
            textoResultado = Nothing
            grpMisturaEntorpecente.Visible = False
            cmbDescricao.Focus()
        Else
            MsgBox("Selecione pelo menos uma opção ou saia da tela clicando no 'X'")
        End If

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        grpMisturaEntorpecente.Visible = False
        grpMisturaEntorpecente.Enabled = False
        limpaCheck()
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

        Dim textoDrogas As New StringBuilder
        Dim textoResultado As New StringBuilder
        Dim indice As Integer = 0

        For Each controle As Control In grpAntiDepressivo.Controls
            If TypeOf (controle) Is RadioButton Then
                If DirectCast(controle, RadioButton).Checked Then
                    textoResultado.Append(DirectCast(controle, RadioButton).Tag).Append(Environment.NewLine)
                End If
            End If
        Next
        textoMisturaEntorpecentes = textoResultado.ToString
        limpaCheck()
        textoDrogas = Nothing
        textoResultado = Nothing
        grpAntiDepressivo.Visible = False
        cmbDescricao.Focus()
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        grpAntiDepressivo.Visible = False
        grpAntiDepressivo.Enabled = False
        limpaCheck()
    End Sub

    Private Sub cmbInvolucro_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbInvolucro.SelectedIndexChanged
        If cmbInvolucro.Text.Equals("invólucro de segurança") Then
            txtInvolucroIC.Visible = True
            lbIc.Visible = True
        Else
            txtInvolucroIC.Visible = False
            lbIc.Visible = False
        End If
    End Sub
    Private Sub txtPesoTotal_KeyPress1(sender As Object, e As KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub txtPesoContraProva_KeyPress(sender As Object, e As KeyPressEventArgs)
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar.Equals(Sep) Or Char.IsControl(e.KeyChar)) Then e.Handled = True
    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        pnlInvolucro.Visible = False
        habilitaPainelInferior(True)
    End Sub

    Private Sub cmdOk_Click_1(sender As Object, e As EventArgs) Handles cmdOk.Click
        pnlInvolucro.Visible = False
        If validaInvolucro() Then
            If (generica.validaCampos(ucPreambulo)) Then
                If gridDrogas.Rows.Count = 0 Then
                    MsgBox("Adicione pelo menos uma substância na lista")

                Else
                    pb.Visible = True
                    generica.salvaPreambulo(ucPreambulo)
                    geraLaudo()
                    If erroNivel > 0 Then
                        If generica.rollBack(registroGlobal.registroPincipal, nomeDiretorio, erroNivel, ucPreambulo.ehNovo, ucPreambulo) Then
                            MsgBox("O sistema recuperou de um erro grave e nenhuma informação foi gravada. Para registrar um novo laudo, clique em novo laudo")
                            erroNivel = 0
                            ucPreambulo.btnLimpaCampos.PerformClick()
                        End If
                    Else
                        ' ucPreambulo.txtDataEntrada.Enabled = False
                        habilita(False, , True, False, False, True, False)
                    End If

                End If
            End If

        Else
            pnlInvolucro.Visible = True
        End If
    End Sub

    Private Sub cmbInvEnvio_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbInvEnvio.SelectedIndexChanged
        If cmbInvEnvio.Text.Equals("invólucro de segurança") Then
            txtInvEnvio.Visible = True
        Else
            txtInvEnvio.Visible = False
        End If
    End Sub

    Private Sub grpMisturaEntorpecente_Enter(sender As Object, e As EventArgs) Handles grpMisturaEntorpecente.Enter

    End Sub

    Private Sub Label3_Click(sender As Object, e As EventArgs)

    End Sub

    Private Sub pnlPeso_Paint(sender As Object, e As PaintEventArgs)

    End Sub
End Class